package com.lineage.server.model.map;

import com.lineage.server.model.Instance.L1NpcInstance;
import com.lineage.server.model.L1Character;
import com.lineage.server.types.Point;

public abstract class L1Map {
  private static final int[] NUMBER;
  
  private static final L1NullMap _nullMap = new L1NullMap();
  
  static {
    NUMBER = new int[] { 0, 12, 16, 24, 28, 32, 44 };
  }
  
  public static L1Map newNull() {
    return _nullMap;
  }
  
  public abstract L1V1Map copyMap(int paramInt);
  
  public abstract int getId();
  
  public abstract int getX();
  
  public abstract int getY();
  
  public abstract int getWidth();
  
  public abstract int getHeight();
  
  public abstract int getTile(int paramInt1, int paramInt2);
  
  public boolean isOriginalTile(int x, int y) {
    int number = getOriginalTile(x, y);
    int number2[], length = (number2 = NUMBER).length;
    int j = 0;
    while (j < length) {
      int i = number2[j];
      if (number == i)
        return false; 
      j++;
    } 
    return true;
  }
  
  public abstract int getOriginalTile(int paramInt1, int paramInt2);
  
  public abstract boolean isInMap(Point paramPoint);
  
  public abstract boolean isInMap(int paramInt1, int paramInt2);
  
  public abstract boolean isPassable(Point paramPoint, L1Character paramL1Character);
  
  public abstract boolean isPassable(int paramInt1, int paramInt2, L1Character paramL1Character);
  
  public abstract boolean isPassable(Point paramPoint, int paramInt, L1Character paramL1Character);
  
  public abstract boolean isPassable(int paramInt1, int paramInt2, int paramInt3, L1Character paramL1Character);
  
  public abstract boolean isPassableDna(int paramInt1, int paramInt2, int paramInt3);
  
  public abstract boolean isDoorPassable(int paramInt1, int paramInt2, int paramInt3, L1NpcInstance paramL1NpcInstance);
  
  public abstract void setPassable(Point paramPoint, boolean paramBoolean);
  
  public abstract void setPassable(int paramInt1, int paramInt2, boolean paramBoolean, int paramInt3);
  
  public abstract void setPassable(int paramInt1, int paramInt2, boolean paramBoolean);
  
  public abstract boolean isPassable(int paramInt1, int paramInt2);
  
  public abstract boolean isSafetyZone(Point paramPoint);
  
  public abstract boolean isSafetyZone(int paramInt1, int paramInt2);
  
  public abstract boolean isCombatZone(Point paramPoint);
  
  public abstract boolean isCombatZone(int paramInt1, int paramInt2);
  
  public abstract boolean isNormalZone(Point paramPoint);
  
  public abstract boolean isNormalZone(int paramInt1, int paramInt2);
  
  public abstract boolean isArrowPassable(Point paramPoint);
  
  public abstract boolean isArrowPassable(int paramInt1, int paramInt2);
  
  public abstract boolean isArrowPassable(Point paramPoint, int paramInt);
  
  public abstract boolean isArrowPassable(int paramInt1, int paramInt2, int paramInt3);
  
  public abstract boolean isUnderwater();
  
  public abstract boolean isMarkable();
  
  public abstract boolean isTeleportable();
  
  public abstract boolean isEscapable();
  
  public abstract boolean isUseResurrection();
  
  public abstract boolean isUsePainwand();
  
  public abstract boolean isEnabledDeathPenalty();
  
  public abstract boolean isTakePets();
  
  public abstract boolean isRecallPets();
  
  public abstract boolean isUsableItem();
  
  public abstract boolean isUsableSkill();
  
  public abstract boolean isGuaji();
  
  public abstract int isUsableShop();
  
  public abstract int isStart_time();
  
  public abstract int isEnd_time();
  
  public abstract boolean isdropitem();
  
  public abstract int isweek();
  
  public abstract boolean isClanPc();
  
  public abstract boolean isPartyPc();
  
  public abstract boolean isAlliancePc();
  
  public abstract boolean isFishingZone(int paramInt1, int paramInt2);
  
  public abstract int isExistDoor(int paramInt1, int paramInt2);
  
  public abstract String toString(Point paramPoint);
  
  public boolean isNull() {
    return false;
  }
  
  public abstract boolean isPassable(int paramInt1, int paramInt2, int paramInt3);
  
  public abstract void setTestTile(int paramInt1, int paramInt2, int paramInt3);
}
